import { ActionContext } from "vuex";
import Bridge from "@/utils/bridge";
import HTTP from "@/utils/http";
import Config from "@/config";
import Vue from "vue";

export default {
    // 退出登录
    logout(context: ActionContext<any, any>) {
        return HTTP.logout().then((respData: any) => {
            context.commit("clearUserInfo");
        });
    },

    // 获取主页数据（商户App & 服务商App）
    getHomeData(context: ActionContext<any, any>) {
        return HTTP.bannerListAll({ typeCode: "01" }).then((respData: any) => {
            if (respData === false) {
                return respData;
            }
            context.commit("setHomeData", { bannerData: respData });
            return respData;
        });
    },

    // 获取字典数据（商户App）
    getDicData(context: ActionContext<any, any>) {
        if (Config.appCode === "AGNAPP") {
            return HTTP.serverCollectionDic().then((respData: any) => {
                if (respData === false) {
                    return respData;
                }
                context.commit("setBaseData", { storeDic: respData });
                return respData;
            });
        } else {
            return HTTP.collectionDic().then((respData: any) => {
                if (respData === false) {
                    return respData;
                }
                context.commit("setBaseData", { storeDic: respData });
                return respData;
            });
        }
    },

    // 获取设备信息（商户App）
    getDeviceInfo(context: ActionContext<any, any>) {
        return Bridge.DeviceInfo();
    },

    // 检查设备状态（商户App）
    checkDeviceStatus(context: ActionContext<any, any>) {
        // // TODO MOCK
        // const userId = "U0004272000000008";
        const params = {
            userId: context.state.userInfo.userId
        };
        // console.log(context.state.userInfo.userId);
        return Bridge.GetSDKData("selectUser", params).then((resp: any) => {
            const respObj = JSON.parse(resp);
            // 0 商户已开通且已绑定主设备->可以交易
            // 1 商户已开通但未绑定本设备->应先主设备绑定
            // 2 该账号下没有商户->应先开通商户
            // 3 商户正在审核中->请耐心等待
            // 4 该用户为子设备（店员）且已绑定子设备->可以交易
            // 5 该用户为子设备（店员）但未绑定子设备->先绑定子设备
            // 6 不可知
            // 可以交易
            context.commit("setSDKInfo", { regStatus: respObj.regStatus });
        });
    },

    // -----------------------------------------

    // 获取商户状态数据（商户App）
    getMerchantData(context: ActionContext<any, any>) {
        return HTTP.baseMerchant().then((respData: any) => {
            if (respData === false) {
                return respData;
            }
            context.commit("setHomeData", { custInfo: respData });
            return respData;
        });
    },

    // 服务商状态数据（服务商App）
    serverUserStatus(context: ActionContext<any, any>) {
        return HTTP.serverInfo().then((respData: any) => {
            if (respData === false) {
                return respData;
            }
            context.commit("setHomeData", { serverInfo: respData });
            return respData;
        });
    }
    // ------------------------------------------
};
